package com.polymorphic多态.练习题.练习02;//属性看编译类型，方法看运行类型

public class polyExercize01 {
    public static void main(String[] args) {
        Sub s = new Sub();  //编译类型：Sub ，运行类型：Sub
        System.out.println(s.count);  //属性看编译类型，编译类型是Sub，所以是20
        s.display();  //方法看运行类型，运行类型是Sub，所以是20
        Base b = s;   //将b指向Sub对象，所以b的编译类型是Base，运行类型是Sub
        System.out.println(s == b);  //true，因为s和b指向的是同一个对象s
        System.out.println(b.count); //属性看编译类型，编译类型是Base，所以是10
        b.display();   //方法看运行类型，运行类型是Sub，从子类开始，所以是20
    }
}


class Base{
    int count = 10;
     public void display(){
         System.out.println(this.count);
     }
}

class Sub extends Base{
    int count = 20;
    public void display(){
        System.out.println(this.count);
    }
}
